import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

// 用于动态导入 ./constants 目录下的所有 .js 文件。
const constantsFiles = require.context('./constants', true, /\.js$/)

// 遍历所有导入的模块，将其合并到一个数组 routes 中
const routes = constantsFiles.keys().reduce((routes, path) => {
  const routeModule = constantsFiles(path).default;
  // 如果模块是数组（支持模块导出多个路由），则直接合并
  // 使用concat 可以避免数组嵌套
  if (Array.isArray(routeModule)) {
    return routes.concat(routeModule);
  } else {
    routes.push(routeModule);
  }
  return routes;
}, []);

const router = new VueRouter({
  routes,
});

export default router;
